<?php
/**
 * <https://y.st./>
 * Copyright © 2019 Alex Yst <mailto:copyright@y.st>
 * 
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program. If not, see <https://www.gnu.org./licenses/>.
**/

$xhtml = array(
	'<{title}>' => 'More options',
	'takedown' => '2017-11-01',
	'<{body}>' => <<<END
<img src="/img/CC_BY-SA_4.0/y.st./weblog/2019/05/17.jpg" alt="White flowers among red and green leaves" class="framed-centred-image" width="800" height="480"/>
<section id="diet">
	<h2>Dietary intake</h2>
	<p>
		For dinner, I had the remainder of my muffuletta, which weighed 346 grams.
		I didn&apos;t really have time for other meals, but I snacked on 372 grams of pretzels and 388 grams of mixed juice.
	</p>
	<p>
		My dietician sent me some information, which arrived via post today.
		It includes four plant-based recipes, as well as some general tips on healthy eating.
		Nice!
		I&apos;ll have to remember to thank them in a week at our next meeting.
		I&apos;ll get a new shopping list together, then I can pick up the ingredients I need on Sunday night.
		It seems like going above and beyond that they sent this.
		They must&apos;ve paid attention to my survey when entering my answers.
		One of the questions it asked was about things I&apos;d tried in my attempts to lose weight in the past, and how successful these things had been.
		I mentioned that plant-based dieting had really helped in the past, though I didn&apos;t admit that I was still doing it.
		It&apos;s just not making any further difference.
	</p>
</section>
<section id="rings">
	<h2>Rings</h2>
	<p>
		It&apos;s been over a week since I wrote to the ring-selling company.
		They still haven&apos;t contacted me back.
		When I sent the letter, their automated system sent me an email back, telling me they&apos;d get back to me in twenty-four to seventy-two hours.
		This tells me not only that they&apos;ve missed their promised response window, but also that they did in fact receive my email.
		Otherwise, their automated system couldn&apos;t&apos;ve sent back that automated response.
	</p>
	<p>
		I wrote to them again today, this time saying that it&apos;s been over a week with no response, and asking if I need to issue a chargeback. I included that I didn&apos;t want to have to do that though.
		And honestly, I don&apos;t.
		It&apos;s a pain.
		They responded that because of the missing ring, they&apos;ll waive the exchange fee for getting the right size of the ring I ordered.
		Um.
		That&apos;s nice, but that&apos;s not what I asked for.
		Where is this other ring?
		Are they trying to cheat me out of that by waiving the fee on something else?
		I don&apos;t think so; they&apos;re not getting away with that.
		So I replied that I&apos;m more than happy to pay the exchange fee, and again asked about the missing ring.
		They said that they&apos;d said they&apos;d add the ring when they sent back the exchange ring, but that&apos;s not what they said.
		But now that&apos;s covered.
		For hassling them though, and as a show of good faith, I asked how to pay the exchange fee.
		Honestly, ordering the wrong size was my own fault, and I was prepared to have to buy a whole new ring if they didn&apos;t want to exchange it, so a small exchange fee is no big deal.
		No response yet.
	</p>
</section>
<section id="drudgery">
	<h2>Drudgery</h2>
	<p>
		My discussion post for the day:
	</p>
	<blockquote>
		<p>
			Encryption of data at rest is the encryption of data as it is stored (Security First, 2018).
			This is separate from encryption of data in-transit.
			Data in process, which would be data in volatile memory, was also mentioned, but I don&apos;t think data in $a[RAM] is usually encrypted.
		</p>
		<p>
			Encryption of data at rest prevents your data from being disclosed to those that are able to physically get ahold of your data&apos;s storage vessel.
			For example, my laptop&apos;s hard drive is encrypted, aside from the <code>/boot</code> partition.
			That means that if someone takes my laptop, or my laptop&apos;s hard drive, they can&apos;t read anything I have stored.
			They can see my <code>/boot</code> partition, which might be enough to tell them I&apos;m running Debian 9, but that&apos;s all they&apos;ll get from the drive.
			On the other hand, if my hard drive wasn&apos;t encrypted, anyone that took my laptop or hard drive could get my data.
			&quot;Oh, but don&apos;t you have a user password?&quot;, I hear some people ask.
			I do, but that password only applies within the context of my operating system.
			If someone takes the hard drive out and connects it to their own computer as a secondary drive, my operating system and my password can be ignored.
			All my data would be available to be read and copied if not for the disk encryption.
		</p>
		<p>
			The same applies to things such as tape decks used for backup.
			Those backups have no passwords though, because there&apos;s no operating system on the tape decks to have passwords set with.
			There&apos;s nothing to bypass.
			There&apos;s only your raw data.
			If not encrypted, anyone that gets ahold of your backup tapes has access to all of your data on them.
		</p>
		<p>
			To encrypt, you need an encryption system and an encryption key.
			Hardware solutions for secure storage of keys are available, such a Hardware Security Module (Security First, 2018).
			These devices are designed to erase your stored keys if they detect too much vibration or if they&apos;re powered off.
			It prevents unauthorised key access, which means it prevents unauthorised disclosure of your data.
			The downside?
			Well, if it has to destroy your key to prevent disclosure, it&apos;ll end up basically destroying your data in the process.
			Without the decryption key, your data will be effectively gone.
		</p>
		<p>
			As for a product that offers encryption of data at rest, I use $a[LUKS].
			It&apos;s easy to set up when you install the operating system (at least for some Linux distributions, such as Debian), and can be used to encrypt external drives as well.
			It stores the encryption key on the drive, but encrypted using a password of your choice.
			I tend to use a long sentence to encrypt my internal hard drive, as it&apos;s easy to remember but incredibly hard to guess, and long random strings for my external drives, as by the time I need to access those drive, I have access to my encrypted KeePassX password database on my internal hard drive, an don&apos;t need to remember passwords.
		</p>
		<p>
			The important thing to note is that for data loss to occur, data has to be lost.
			When you lose something, you <strong>*no longer have it*</strong>.
			Data loss is <strong>*not*</strong> the same thing as data <strong>*copying*</strong> which is what the articles I&apos;ve found seem to imply by their use of the phrase &quot;data loss&quot;.
			Encryption will prevent unauthorised copying of data in most cases, but it will <strong>*not*</strong> prevent data loss in any way.
			Data is still just as susceptible to damage when encrypted, and I can&apos;t find a single article that even suggests otherwise.
			The discussion post&apos;s wording though specifically uses the word &quot;destroyed&quot;.
			We&apos;re supposed to tell how encryption can prevent data from being destroyed.
			As far as I can tell, encryption can&apos;t do that.
			You can delete encrypted files, and a natural disaster will damage and/or destroy encrypted data as much as unencrypted data.
			If an entire drive is encrypted, encryption can prevent selective destruction of data, but someone can easily destroy the entire contents of the drive or even (if they know what they&apos;re doing) destroy random data.
		</p>
		<div class="APA_references">
			<h3>References:</h3>
			<p>
				Security First. (2018, December 17). <a href="https://securityfirstcorp.com/what-is-data-encryption-at-rest/">What is Data Encryption at Rest? - Detailed Explanation</a>. Retrieved from <code>https://securityfirstcorp.com/what-is-data-encryption-at-rest/</code>
			</p>
		</div>
	</blockquote>
</section>
<section id="Minetest">
	<h2>Minetest</h2>
	<p>
		I came up with a new idea on my way home from work today.
		I think I&apos;ve toyed with this idea in the past, but never all that seriously.
		Instead of coming up with unique items for each base item/upgrade combination, I could instead come up with a single upgraded item for each base item.
		I could then put some spin on it based on which element the player pairs it with.
		The advantage to doing this would be that every item in the game will be upgradable using every element in the game.
		Every combination could be possible.
		It&apos;s not feasible otherwise; I can&apos;t come up with a unique representation for each base/element combo.
		The disadvantage is that I&apos;m pretty much dealing with palette swaps at that point, which could be a bit of a let-down for some people.
		The enhanced items aren&apos;t going to be hard to get though, unlike those rare storage nodes from the other mod I considered writing, so it&apos;ll probably be fine.
		Minetest doesn&apos;t handle palette swaps well though, so they won&apos;t be the prettiest nodes available.
		The other thing is that $a[ABM]s can&apos;t be conditionally triggered based on <code>param2</code>&apos;s value, so any $a[ABM]s will influence all versions of the node.
		As I&apos;d like to avoid triggering $a[ABM]s just to have them check <code>param2</code> then return without doing anything (the closest option), as it seems like a lot of overhead, I&apos;ll likely be choosing specific nodes to handle various $a[ABM] things based on their element.
	</p>
</section>
END
);
